Ethernet pause aggregation for a relay device

ABSTRACT

A relay device is provided that may identify a quantity of empty data byte locations in a data buffer of the relay device. The relay device may receive an indicator associated with transmitting data packets. The relay device may pause or enable a lossless flow of data between the relay device, a host device, and a peer device based on the quantity of empty data byte locations, the indicator, or both. The relay device may include a first data interface coupled with a peer device, a second data interface coupled with a host device, a data buffer configured to store data packets received from the host device, and a state machine that enables a lossless transmission of data between the host device and peer device. The state machine may transmit a pause frame to the host device based on a data buffer utilization reaching a data storage capacity.

FIELD OF TECHNOLOGY

The following relates to media access control, including Ethernet pauseaggregation.

BACKGROUND

In some data packet networks, a relay device (e.g., a Media AccessControl Security (MACsec) device, an Internet Protocol Security (IPsec)device, a tunneling device) may be configured to relay data packetsbetween a host device and a peer device. Some relay devices may beequipped with a data buffer for storing incoming data packets receivedfrom the host device until the data packets have been successfullyencrypted and relayed to the peer device.

SUMMARY

The described techniques relate to improved methods, systems, devices,and apparatuses that support Ethernet pause aggregation for a relaydevice. Generally, the described techniques provide for media accesscontrol.

A method for flow control in a network is provided that includes:identifying, by a device, a quantity of empty data byte locations in adata buffer of the device; receiving an indicator associated withtransmitting data packets; identifying a state of a state machineincluded in the device, where the state of the state machine may bebased on the indicator; and pausing a lossless flow of data between thedevice and at least two other devices. Pausing the lossless flow of datamay be based on the quantity of empty data byte locations being below athreshold, the state of the state machine, or both.

A device is provided that includes: a processor; memory in electroniccommunication with the processor; and instructions stored in the memory,the instructions being executable by the processor to: identify, by thedevice, a quantity of empty data byte locations in a data buffer of thedevice; receive an indicator associated with transmitting data packets;identify a state of a state machine included in the device, where thestate of the state machine is based on the indicator; and pause alossless flow of data between the device and at least two other devices.Pausing the lossless flow of data may be based on the quantity of emptydata byte locations being below a threshold, the state of the statemachine, or both.

A system is provided that includes: a data buffer; a controller, wherethe controller is configured to identify a quantity of empty data bytelocations in the data buffer; a transceiver, where the transceiver isconfigured to receive an indicator associated with transmitting datapackets; and a state machine configured to transition among a set ofstates based on the indicator. The controller is further configured topause a lossless flow of data between the data buffer and at least twodevices, where pausing the lossless flow of data may be based on thequantity of empty data byte locations being below a threshold, the stateof the state machine, or both

Examples may include one of the following features, or any combinationthereof.

Some examples of the method, apparatus, and system described herein mayinclude enabling the lossless flow of data between the device and the atleast two other devices, where enabling the lossless flow of data may bebased on the quantity of empty data byte locations exceeding thethreshold, the state of the state machine, or both.

In some examples of the method, apparatus, and system described herein,pausing the lossless flow of data based on the quantity of empty databyte locations may be regardless of the state of the state machine;enabling the lossless flow of data based on the quantity of empty databyte locations may be regardless of the state of the state machine; orboth.

In some examples of the method, apparatus, and system described herein,pausing the lossless flow of data may be based on a first stateassociated with the state machine; and enabling the lossless flow ofdata may be based on a second state associated with the state machine.

Some examples of the method, apparatus, and system described herein mayinclude transmitting a pause request based on the quantity of empty databyte locations being below a threshold, the state of the state machine,or both. In some examples, the pause request, the indicator, or both mayinclude a control frame.

Some examples of the method, apparatus, and system described herein mayinclude transmitting an enable request based on the quantity of emptydata byte locations exceeding a threshold, the state of the statemachine, or both. In some examples, the enable request, the indicator,or both may include a control frame.

Some examples of the method, apparatus, and system described herein mayinclude receiving a set of data packets; and storing the set of datapackets to the data buffer, where identifying the quantity of empty databyte locations may be based on storing the set of data packets.

In some examples of the method, apparatus, and system described herein,receiving the set of data packets, storing the set of data packets, orboth may include refraining from discarding one or more data packets ofthe set of data packets.

Some examples of the method, apparatus, and system described herein mayinclude transmitting at least a subset of the set of data packets over acommunication medium based on the state of the state machine, whereidentifying the quantity of empty data byte locations may be based ontransmitting at least the subset of the set of data packets.

In some examples of the method, apparatus, and system described herein,the communication medium may include a physical medium electricallycoupling the device and a first device of the at least two otherdevices.

Some examples of the method, apparatus, and system described herein mayinclude determining a size of the data buffer based on one or more of:an interface bandwidth associated with the communication medium; adistance between the device and the first device; and a transmissionspeed associated with the communication medium.

In some examples of the method, apparatus, and system described herein,the device may include a relay device.

In some examples of the method, apparatus, and system described herein,the at least two other devices may include a host device and a peerdevice.

In some examples of the method, apparatus, and system described herein,the network may include a local area network.

A relay device is provided that includes: a first data interface coupledwith a peer device; a second data interface coupled with a host device;a data buffer that is configured to store data packets received from thehost device prior to transmitting the data packets to the peer device;and a state machine that enables a lossless transmission of data betweenthe host device and peer device. The relay device may transmit a pauseframe to the host device based on a data buffer utilization reaching adata storage capacity.

Examples may include one of the following features, or any combinationthereof.

In some examples of the method, apparatus, and system described herein,the state machine may be further configured to transmit the pause frameto the host device in response to receiving an additional pause framefrom the peer device.

In some examples of the method, apparatus, and system described herein,the data buffer may include a First-In-First-Out data buffer.

In some examples of the method, apparatus, and system described herein,the data packets may be received at more than 400 G/sec and the databuffer may include a capacity of no more than 50 kb.

In some examples of the method, apparatus, and system described herein,the data buffer may include a capacity of no more than 25 kb.

In some examples of the method, apparatus, and system described herein,a data cable connects the first data interface with the peer device andwhere a line trace connects the second data interface with the hostdevice.

In some examples of the method, apparatus, and system described herein,the data cable may be at least 5 m in length.

In some examples of the method, apparatus, and system described herein,the first data interface may include at least one of a PCI Express(PCIe) interface and an Ethernet interface.

In some examples of the method, apparatus, and system described herein,the state machine may be further configured to transmit a starttransmission command to the host device in response to the data bufferutilization falling below a predetermined threshold.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example of a system that supports Ethernet pauseaggregation for a relay device in accordance with aspects of the presentdisclosure.

FIG. 2 illustrates an example of a system that supports Ethernet pauseaggregation for a relay device in accordance with aspects of the presentdisclosure.

FIG. 3 illustrates an example of a relay device that supports Ethernetpause aggregation for a relay device in accordance with aspects of thepresent disclosure.

FIG. 4 illustrates an example of a process flow that supports Ethernetpause aggregation for a relay device in accordance with aspects of thepresent disclosure.

DETAILED DESCRIPTION

In some networks, a Media Access Control Security (MACsec) engine (alsoreferred to herein as a relay component) may be configured to relay datapackets between a host device and a peer device. A MACsec engine may beimplemented in, for example, a relay device electrically coupled betweenthe host device and the peer device. In some examples, a MACsec enginemay move or transfer data from ingress-to-egress. In some cases, aMACsec engine may change the packet size of the data packets (e.g., dueto encryption processes, signal processing, etc. performed on the datapackets) prior to relaying or transferring the data packets. Forexample, input bandwidth at a MACsec engine may be different from outputbandwidth. Some other examples of relay devices include an Internetprotocol security (IPsec) device or a tunneling device.

Some relay devices may be equipped with a data buffer for storingincoming data packets received from the host device until the datapackets have been successfully encrypted and relayed to the peer device.In some cases, relay devices may be equipped with a data buffer forstoring incoming data packets received from the host device (e.g., via ahost side of the relay device) until the data packets have beensuccessfully encrypted and relayed to the peer device (e.g., via a lineside of the relay device). For lossless operation, a relay device may beequipped with a data buffer (also referred to herein as a hold buffer ora receive buffer) and a state machine for stopping the data flow of datapackets at both the host side and the line side of the relay device. Insome cases, the host side of the relay device may be electricallycoupled to the host device via a relatively short communications link,and the line side of the relay device may be electrically coupled to thepeer device via a relatively longer communications link.

In some cases, to ensure lossless operation between a host device (alsoreferred to herein as a sender) to a peer device (also referred toherein as a receiver), packet buffers may be incorporated into networkequipment (e.g., host devices, relay devices, peer devices). In someexamples, the size of the packet buffer at a relay device may be equalto the round trip time (RTT) between the relay device and the peerdevice. However, conditions such as path blockage and congestion along acommunication medium (e.g., the line) between the MACsec engine and thepeer device may lead to an increase in lost transmissions andretransmissions, thereby increasing the amount of data to be stored inthe data buffer of a relay device. In some cases, reduced datarates/transmission speeds associated with the communication medium maycontribute to a reduced output bandwidth (e.g., at the line side) at theMACsec engine compared to input bandwidth (e.g., at the host side),which may further increase the amount of data to be stored in the databuffer. In some other cases, the rate at which the MACsec engine canprocess and relay data traffic to the peer device may be based ontransmission speeds associated with the communication medium between theMACsec engine and the peer device, and the rate may be slower than therate at which data traffic is transferred to the MACsec engine from thehost device.

In some data packet networks, when a relay device is added to a channel(e.g., from a host device to a peer device via the relay device) andlossless operation is required, some conditions (e.g., path blockage,congestion, reduced data rates) between the relay device and the peerdevice may prevent the relay device from acting as a wire. That is, forexample, some implementations may scale the data buffer of the relaydevice based on the RTT between the relay device and the peer device inorder to ensure a lossless mode of operation between the devices.Accordingly, in some cases, some relay devices may be equipped with arelatively large data buffer for storing incoming data packets so as toreduce the possibility of discarded packets. However, such techniquesmay be unattainable due to overhead (e.g., cost, device size, etc.).

In some data packet networks, for example, the relay device forwardspackets from a host device to a peer device with some inefficiency(e.g., due to path blockage, data rates, etc. as described herein).Accordingly, in some cases, the amount of data stored in the data buffer(e.g., host-side buffer) of the relay device may reach the data storagecapacity of the data buffer. Some techniques may address such datastorage capacities by terminating lossless mode of operation at therelay device (e.g., lossless operation between the host device and therelay device in combination with lossless operation between the relaydevice and the peer device). For example, the host device may request(e.g., via a command) the relay device to stop transmitting data packetsto the host device (e.g., stop relaying data packets from the peerdevice to the host device), and the relay device may absorb the incomingtraffic from the peer device. However, absorbing traffic from at therelay device (e.g., traffic from the peer device) may be associated witha high cost overhead, as the communication medium (e.g., the line)between the relay device and the peer device may be relatively long(e.g., 100 meters). That is, for example, the amount of existing datapackets being transmitted over the communication medium (and to bestored at the relay device) may be relatively large due to therelatively large RTT associated with the communication medium.

Aspects described herein support lossless mode operations at a relaydevice including a MACsec engine. For example, the relay device maysupport lossless data transmissions between a host device and a peerdevice, via the relay device. The relay device may include a statemachine (e.g., a pause-reflection state machine) for enabling and/ordisabling a flow of data from the host device to the peer device basedon a set of criteria. In some examples, by enabling and/or disabling theflow of data, the relay device may control data flow at a data bufferfor forwarding data packets from the host device to a peer device,thereby preventing data loss. For example, controlling the data flow mayprevent the amount of incoming data from exceeding the buffer capacity.

The data buffer storing packets flowing from the host device to the peerdevice may be referred to as a ‘host-side buffer,’ a ‘host-side databuffer,’ or a ‘relay unit packet buffer’ of the relay device. In somecases, for complete lossless termination, the host-side buffer may besized according to the RTT between the host device and the relay device.For example, the RTT between the host device and the relay device maycorrespond to a relatively short (e.g., 3 inches) communication mediumbetween the host device and the relay device. For example, the host-sidebuffer may store data packets coming from the host device (and targetedto the peer device), and the size of the host-side buffer may berelatively small (e.g., accommodating for the relatively small RTTbetween the host device and the relay device).

The relay device may include another state machine for enabling and/ordisabling a flow of data from the peer device to the host device basedon a set of criteria. In some examples, by enabling and/or disabling theflow of data, the relay device may control data flow at a data buffer(also referred to herein as a ‘line-side buffer,’ a line-side databuffer,′ or a ‘peer-side buffer’) for forwarding data packets from thepeer device to the host device, thereby preventing data loss. Forexample, controlling the data flow may prevent the amount of incomingdata from exceeding the buffer capacity.

In some cases, for complete lossless termination, the line-side databuffer may be sized according to the RTT between the relay device andthe peer device. For example, the RTT between the relay device and thepeer device may correspond to a relatively long (e.g., 100 meters)communication medium between the relay device and the peer device. In anexample, the line-side data buffer may store data packets coming fromthe peer device (and targeted to the host device), and the size of theline-side data buffer may be relatively large (e.g., accommodating forthe relatively large RTT between the relay device and the peer device).

Aspects of the present disclosure described herein may support reducingthe size of the line-side buffer under example conditions (e.g.,assumptions) in which any bandwidth (e.g., data packets) sent by thepeer device can be forwarded, via the relay device, to the host device.In such an example, the relay device and/or the host device (e.g., viathe relay device) may refrain from generating and sending pause packetsto the peer device.

In another example, aspects of the disclosure may support reducing thesize of the line-side buffer under example conditions (e.g.,assumptions) in which no bandwidth (e.g., data packets) sent by the hostdevice may be forwarded to the peer device. In such an example, therelay device and/or the peer device (e.g., via the relay device) maygenerate and send pause packets to the host device.

A relay device described herein may support receiving pause requestsfrom a peer device and forwarding the pause requests to a host device.In some aspects, by forwarding the pause requests to the host device,the relay device may stop or pause the flow of traffic to the peerdevice (e.g., by requesting the host device to stop sending datapackets). In some cases, when the host-side buffer at the relay deviceexceeds a threshold (e.g., data capacity of the host-side buffer), therelay device may generate and transmit a pause request to the hostdevice. In an example, from the perspective of the host device, thepause request may appear to originate from the peer device.

In an example, the aspects described herein may support a lossless modeof operation from the host device to the relay device and a losslessmode of operation from the relay device to the peer device. In anotherexample, the example aspects may support a lossless mode of operationfrom the peer device to the host device, via the relay device. Forexample, the peer device may transmit a request (e.g., a pause frame) tothe relay device to stop the data flow from the host device to the peerdevice, and the relay device may forward the request to the host device.Alternatively, or additionally, the host device may transmit a request(e.g., a pause frame) to the relay device to stop the data flow from thepeer device to the host device, and the relay device may forward therequest to the peer device.

In an example aspect, the relay device may control the data flow basedon an amount of data (e.g., with respect to a threshold) in the databuffer of the relay device. For example, when the amount of data storedin the data buffer exceeds the threshold (e.g., due to data packetsreceived from the host device, less data packets relayed to the peerdevice, due to differences in data-rates, etc.), the relay device maytransmit a request (e.g., a pause frame) to the host device, requestingthe host device to stop or pause data packet transmissions. In somecases, the relay device may control the data flow based on an indicator(e.g., a pause frame indicating ‘do not send’ data packets, atransmission command indicating to ‘send’ data packets) received fromthe peer device. For example, the relay device may observe for pauseframes and/or transmission commands transmitted by the peer device. Inan example, when the amount of data in the data buffer of the relaydevice is below a threshold (e.g., the relay buffer is empty), and thepeer device is in an enable-transmission state (e.g., the relay devicehas received a transmission command from the peer device), the relaydevice may send a transmission command to the host device for startingor resuming data packet transmissions.

In some aspects, at the peer device, when the amount of data in the databuffer of the peer device is below the threshold (e.g., the data bufferis empty), the peer device may send a transmission command to the host(e.g., via the relay device) for starting or resuming data packettransmissions. In an example, the peer device may send the transmissioncommand to the relay device. The relay device may forward thetransmission command to the host device (or refrain from forwarding thetransmission command) based on the buffer status of the relay device.For example, the relay device may forward the transmission command tothe host device when the amount of data in the data buffer of the relaydevice is below a threshold (e.g., buffer status is empty).Alternatively, or additionally, the relay device may refrain fromforwarding the transmission command to the host device when the amountof data is greater than or equal to the threshold (e.g., buffer statusis full). The indication by the peer device (e.g., pause frame,transmission command) may be stored by the relay device.

The relay device may support a reduced buffer size (e.g., 25 kilobytes(kb), 50 kb) at the line side, thereby providing for reduced overhead(e.g., cost, device size). In some examples, aspects described hereinmay support removal of the data buffer at the line-side of a relaydevice, which may be advantageous over some other relay devices. Forexample, in a data packet network, the communication medium (e.g., theline) between a relay device and a peer device may be a switch-to-switch100 meter trace. For some other relay devices, a relay device mayinclude a relatively large data buffer at the line-side for absorbingall of the information/data packets for communication over thecommunication medium. Example aspects of the relay device describedherein may be implemented in an Ethernet switch or an Ethernet gear box.

Aspects of the disclosure are initially described in the context of adata packet network. Examples of processes and signaling exchanges thatsupport Ethernet pause aggregation for a relay device are thendescribed. Aspects of the disclosure are further illustrated by anddescribed with reference to apparatus diagrams, system diagrams, andflowcharts that relate to Ethernet pause aggregation for a relay device.

FIG. 1 illustrates an example of a system 100 that supports Ethernetpause aggregation for a relay device in accordance with aspects of thepresent disclosure. The system 100 may include, for example, a datapacket network. In an example, the system 100 may include a host device105, a relay device 110, and a peer device 115. The host device 105,relay device 110, and peer device 115 may be any electronic devicescapable of connecting to a wireless or wired network.

The system 100 may support the communication of data packets between thehost device 105 and the peer device 115, for example, via the relaydevice 110. In some aspects, the system 100 may implement aspects offlow control in a network, supportive of lossless transmission (e.g.,avoiding dropped frames or data packets) between the host device 105,the relay device 110, and the peer device 115. For example, the system100 may support enabling and/or stopping the flow of data packets atboth the host side (e.g., a relatively short communications link, forexample, communications link 120) and the line side (e.g., a relativelylong communications link, for example, communications link 125) of therelay device 110.

The system 100 may support machine-to-machine communications between anyof the host device 105, the peer device 115, and the relay device 110over a network. In some aspects, the system 100 may supportmachine-to-machine communications between additional host devices 105,peer devices 115, and/or relay devices 110. Networks supported by thesystem 100 may include any type of known communication medium orcollection of communication media, and such networks may use any type ofprotocols to transport messages between endpoints. The networks mayinclude wired communications technologies, wireless communicationstechnologies, or any combination thereof.

The Internet is an example of a network supported by the system 100, andthe network may constitute an Internet Protocol (IP) network consistingof multiple computers, computing networks, and other devices (e.g., hostdevices 105, peer devices 115, and/or relay devices 110, etc.) locatedin multiple locations. Other examples of networks supported by thesystem 100 may include, without limitation, a standard Plain OldTelephone System (POTS), an Integrated Services Digital Network (ISDN),the Public Switched Telephone Network (PSTN), a Local Area Network(LAN), a Wide Area Network (WAN), a wireless LAN (WLAN), a SessionInitiation Protocol (SIP) network, a Voice over Internet Protocol (VoIP)network, a cellular network, and any other type of packet-switched orcircuit-switched network known in the art. In some cases, the system 100may include of any combination of networks or network types. In someaspects, the networks may include any combination of communicationmediums such as coaxial cable, copper cable/wire, fiber-optic cable, orantennas for communicating data (e.g., transmitting/receiving data).

The host device 105 and the relay device 110 may communicate via thecommunications link 120. In an example, the communications link 120 maybe a line trace that connects (e.g., electrically couples) the hostdevice 105 and the relay device 110. The communications link 120 may beconnected to a data interface of the relay device 110.

The communications link 120 may be referred to as, for example, a metalline, transmission line, interconnect line, trace, wire, conductor,signal path, and/or signaling medium. For example, the communicationslink 120 may include any combination of conductive materials thatprovide signal paths for coupling or interconnecting electricalcircuitry associated with the host device 105 and the relay device 110.The conductive materials may include, for example, aluminum (Al), copper(Cu), an alloy of Al and Cu, etc. In some other examples, the conductivematerials may include other materials such as doped polysilicon, dopedsingle-crystal silicon, titanium (Ti), molybdenum (Mo), etc.

The relay device 110 and the peer device 115 may communicate via thecommunications link 125. In an example, the communications link 125 maybe a data cable that connects (e.g., electrically couples) the relaydevice 110 and the peer device 115. In some aspects, the communicationslink 125 may be a secure link and may be capable of communicatingencrypted information. The communications link 125 may be connected toanother data interface of the relay device 110. The data interface maybe, for example, a PCIe interface, an Ethernet interface, etc.

The communications link 125 may include any combination of coaxialcable(s), fiber optic links, and/or switches. In an example, thecommunications link 125 may be an Ethernet cable. For example, thecommunications link 125 may be a full-duplex Ethernet link. In somecases, the communications link 125 may have a length of at least 5meters. In some other examples, the communications link 125 may be atransmission medium including a wireless channel. For example, the relaydevice 110 may be a wired-to-wireless relay device.

The host device 105 may include a pause finite state machine (FSM) 130(also referred to herein as a finite-state automaton, a finiteautomaton, or a state machine), a receive buffer 135 (also referred toherein as a data buffer), and a transmit pipe 140 (also referred toherein as a transmission pipeline). The pause FSM 130 may support flowcontrol between the host device 105, the relay device 110, and the peerdevice 115. In some aspects, the pause FSM 130 may support flow controlin both directions (e.g., from host device 105 to peer device 115, frompeer device 115 to host device 105) over the communications link 120.

For example, the host device 105 may transmit pause frames and/ortransmission commands to the peer device 115 indirectly viacommunications link 120 and communications link 125 (e.g., via the relaydevice 110). In some aspects, pause frames may be referred to herein asa pause messages or pause requests. In some other aspects, transmissioncommands may be referred to herein as a start transmission commands oran enable requests.

In an example, based on a state of the pause FSM 130, the host device105 (the pause FSM 130) may output a pause frame for pausingtransmissions (e.g., of data packets) by the peer device 115 for aspecified period of time. In another example, based on a different stateof the pause FSM 130, the host device 105 may transmit a transmissioncommand to the peer device 115 for enabling or unpausing data packettransmissions by the peer device 115.

The receive buffer 135 may be, for example, a first-in-first-out (FIFO)data buffer. The host device 105 may store data packets received fromthe peer device 115 (e.g., received via the relay device 110). Thetransmit pipe 140 may be, for example, a data path including a set oflogical connections, and the transmit pipe 140 may be compatible with aphysical interface for PCIe Architecture (PIPE) specifications. The hostdevice 105 may transmit data packets over the communications link 120,for example, via the transmit pipe 140.

In an example, based on an amount of data stored in the receive buffer135 exceeding a threshold, the pause FSM 130 may enter a first state(e.g., a pause state), and the host device 105 (the pause FSM 130) mayoutput the pause frame. In another example, based on an amount of datastored in the receive buffer 135 being less than a threshold, the pauseFSM 130 may enter a second state (e.g., an unpause state), and the hostdevice 105 (the pause FSM 130) may output a transmission command forstarting or resuming data packet transmissions by the peer device 115.The host device 105 may process (e.g., using a processor included in thehost device 105) data packets stored in the receive buffer 135, and thepause FSM 130 may enter the unpause state based on detecting the amountof data stored in the receive buffer 135 is less than the threshold.

In another example, the host device 105 may respond to pause framesreceived by the relay device 110. For example, the peer device 115 maytransmit a pause frame to the relay device 110 over the communicationslink 125, and the relay device 110 may transmit a corresponding pauseframe (or the same pause frame) to the host device 105 over thecommunications link 120. The host device 105 may pause transmissions(e.g., of data packets) via the transmit pipe 140 based on the pauseframe. In an example, the pause frame may include a specified period oftime for pausing data packet transmissions. The host device 105 maypause transmissions (e.g., of data packets) via the transmit pipe 140based on the pause frame.

Alternatively, or additionally, the host device 105 may respond totransmission commands received from the relay device 110. For example,the peer device 115 may transmit a transmission command (also referredto herein as a start transmission command) to the relay device 110 overthe communications link 125, and the relay device 110 may transmit atransmission command to the host device 105 over the communications link120. The host device 105 may start or resume transmissions (e.g., ofdata packets) via the transmit pipe 140 based on the transmissioncommand.

Examples of aspects described herein may differ from some data packetnetwork implementations in which a host device (e.g., host device 105)may receive and respond to pause frames and/or transmission commandsreceived directly from a peer device (e.g., peer device 115). Forexample, in some other implementations (e.g., without a relay device110), a host device (e.g., host device 105) may receive a pause frame ora transmission command directly from a peer device (e.g., peer device115) over the communications link 116.

The peer device 115 may include a pause FSM 165 (also referred to hereinas a finite-state automaton, a finite automaton, or a state machine), areceive buffer 170 (also referred to herein as a data buffer), and atransmit pipe 175 (also referred to herein as a transmission pipeline).The pause FSM 165, receive buffer 170, and transmit pipe 140 may includeexamples of aspects of the pause FSM 130, receive buffer 135, andtransmit pipe 140, respectively.

The receive buffer 170 may be, for example, a FIFO data buffer. The peerdevice 115 may store data packets received from the host device 105(e.g., received via the relay device 110). The transmit pipe 175 may be,for example, a data path including a set of logical connections, and thetransmit pipe 175 may be compatible with PIPE specifications. The peerdevice 115 may transmit data packets over the communications link 125,for example, via the transmit pipe 175.

The pause FSM 165 may support flow control between the peer device 115,the relay device 110, and the peer device 115. In some aspects, thepause FSM 165 may support flow control in both directions (e.g., betweenthe peer device 115 and the relay device 110, between the host device105 and the peer device 115 (via the relay device 110), etc.) over thecommunications link 125.

For example, based on a state of the pause FSM 165, the peer device 115(the pause FSM 165) may output a pause frame for pausing transmissions(e.g., of data packets) by the host device 105. Alternatively, oradditionally, the peer device 115 may respond to pause frames receivedfrom other devices (e.g., the host device 105). In some cases, based onthe state of the pause FSM 165, the peer device 115 may transmit atransmission command (also referred to herein as a start transmissioncommand) to the host device 105 for enabling or unpausing data packettransmissions by the host device 105. In some aspects, the peer device115 may transmit pause frames and/or transmission commands to the hostdevice 105 directly or indirectly (e.g., via the relay device 110).

In an example, based on an amount of data stored in the receive buffer170 exceeding a threshold, the pause FSM 165 may enter a first state(e.g., a pause state), and the peer device 115 (the pause FSM 165) mayoutput the pause frame. In another example, based on an amount of datastored in the receive buffer 170 being less than a threshold, the pauseFSM 165 may enter a second state (e.g., an unpause state), and the peerdevice 115 (the pause FSM 165) may output a transmission command forstarting or resuming data packet transmissions by the host device 105.The peer device 115 may process (e.g., using a processor included in thepeer device 115) data packets stored in the receive buffer 170, and thepause FSM 165 may enter the unpause state based on detecting the amountof data stored in the receive buffer 170 is less than the threshold.

In another example, the peer device 115 may respond to pause framesreceived by the host device 105. For example, the peer device 115 mayreceive a pause frame from the host device 105 for pausing transmissions(e.g., of data packets) by the peer device 115. In an example, the peerdevice 115 may receive the pause frame indirectly from the host device105 (e.g., via the relay device 110), over communications link 125. Thepeer device 115 may pause transmissions (e.g., of data packets) via thetransmit pipe 175 based on the pause frame.

In another example, the peer device 115 may respond to pause framesreceived by the relay device 110. For example, the host device 105 maytransmit the pause frame to the relay device 110 over the communicationslink 120, and the relay device 110 may transmit a corresponding pauseframe (or the same pause frame) to the peer device 115 over thecommunications link 125. The peer device 115 may pause transmissions(e.g., of data packets) via the transmit pipe 175 based on the pauseframe.

Alternatively, or additionally, the peer device 115 may respond totransmission commands received from the host device 105. For example,the peer device 115 may receive a transmission command (also referred toherein as a start transmission command) from the host device 105 forstarting or resuming data packet transmissions by the peer device 115.In an example, the peer device 115 may receive the transmission commandfrom the host device 105 over the communications link 125).

In another example, the peer device 115 may respond to transmissioncommands received from the relay device 110. For example, the hostdevice 105 may transmit a transmission command to the relay device 110over the communications link 120, and the relay device 110 may transmita corresponding transmission command (or relay the same transmissioncommand) to the peer device 115 over the communications link 125. Thepeer device 115 may start or resume transmissions (e.g., of datapackets) via the transmit pipe 175 based on the transmission command.

The relay device 110 may include, for example, a MACsec engineconfigured to relay data packets between the host device 105 and thepeer device 115. In some aspects, the relay device 110 may supportperforming one or more encryption processes or conversion processes ondata packets or signaling received from the host device 105 and/or thepeer device 115. For example, for signaling received from the hostdevice 105 or the peer device 115, the relay device 110 may performsignal processing operations such as signal amplification, signalconversion (e.g., from electrical signaling to optical signaling, from aset of specifications to another set of specifications), and/or protocolconversion (e.g., the relay device 110 may function as a repeater).Accordingly, in some examples, input bandwidth at the relay device 110may be different from output bandwidth. The relay device 110 may includea transmit pipe 145, a receive buffer 150, a pause aggregation engine155, a pause FSM 160, and a pause FSM 161.

The transmit pipe 145 may be, for example, a data path including a setof logical connections, and the transmit pipe 140 may be compatible withPIPE specifications. The relay device 110 may transmit data packets overthe communications link 120 and/or the communications link 125, forexample, via the transmit pipe 145.

The receive buffer 150 may be, for example, a FIFO data buffer. Therelay device 110 may store, in the receive buffer 150, data packetsreceived from the host device 105. In an example, the relay device 110may store, in the receive buffer 150, incoming data packets receivedfrom the host device 105 (e.g., via a host side of the relay device110). In some examples, the relay device 110 may remove from the receivebuffer 150, data packets which have been successfully encrypted andrelayed to the peer device 115. In an example, the relay device 110 mayrelay the data packets via the line side of the relay device 110.

The pause aggregation engine 155 may monitor a buffer status (e.g., abuffer utilization) of the receive buffer 150 and a status (e.g., state)of the pause FSM 160. The buffer status may indicate, for example,whether the buffer utilization exceeds a data storage capacity of thereceive buffer 150. In some aspects, the buffer status may indicatewhether the buffer utilization exceeds a data storage threshold. Thedata storage threshold may be different from (e.g., less than) the datastorage capacity.

Alternatively, or additionally, the buffer status may be based on aquantity of empty data byte locations in the receive buffer 150. Forexample, the buffer status may indicate whether the quantity of emptydata byte locations is above a threshold. Based on the buffer status ofthe receive buffer 150 and/or the status of the pause FSM 160, forexample, the relay device 110 (e.g., pause aggregation engine 155) maytransmit a pause frame or a transmission command to the host device 105.

The pause FSM 160 may support flow control between the host device 105,the relay device 110, and the peer device 115. In some aspects, thepause FSM 160 may support flow control from host device 105 to peerdevice 115. The pause FSM 160 may be referred to herein as a ‘modifiedpause FSM’, a ‘peer pause FSM shadow,’ or a ‘peer pause FSM reflection.’For example, the pause FSM 160 may be a shadow FSM capable of mirroringthe state of the pause FSM 165. In some aspects, the pause FSM 160 maybe a shadow FSM capable of predicting an FSM state of the pause FSM 165of the peer device 115. In some aspects, the pause FSM 160 may include amachine learning network (e.g., implemented by one or more processors ofthe relay device 110 and/or program instructions stored in a memory ofthe relay device 110) which may be trained during run-time of the relaydevice 110.

In an example, the receive buffer 150 may be empty or near empty (e.g.,buffer utilization is below a threshold, the amount of data packetsstored in the receive buffer 150 is below a threshold), and a receivestate of the peer device 115 may allow sending packets to the peerdevice 115 (e.g., as indicated by the pause FSM 160 (‘peer pause FSMreflection’)). Based on the buffer utilization at the relay device 110and the receive state of the peer device 115, the relay device 110 maytransmit a transmission command (also referred to herein as a‘continuation request’) to the host device 105 for sending data packetsto the peer device 115. Alternatively, or additionally, as describedherein, if the receive buffer 150 is full with data packets from thehost device 105 (e.g., buffer utilization is above a threshold), therelay device 110 may generate and output a pause frame (also referred toherein as a ‘pause command,’ a ‘stop indication,’ or a ‘pause packet’)to the host device 105.

In another aspect, the host device 105 may transmit a request (e.g., apause frame) to the peer device 115, via the relay device 110, to stopsending data traffic. The relay device 110 may forward the request tothe peer device 115 and, for example, refrain from absorbing datapackets received from the peer device 115. For example, rather thanstoring data packets from the peer device 115 in a data buffer (e.g., aline-side data buffer,′ a ‘peer-side data buffer’), the relay device 110may continue forwarding data packets to the host device 105 until thestream of data packets ends.

The pause FSM 161 may include example aspects of the pause FSM 160. Forexample, the pause FSM 161 may support flow control between the peerdevice 115, the relay device 110, and the host device 105. In someaspects, the pause FSM 161 may support flow control from peer device 115to host device 105. The pause FSM 161 may be referred to herein as a‘modified pause FSM’, a ‘host pause FSM shadow,’ or a ‘host pause FSMreflection.’ For example, the pause FSM 161 may be a shadow FSM capableof mirroring the state of the pause FSM 130. In some aspects, the pauseFSM 161 may be a shadow FSM capable of predicting an FSM state of thepause FSM 130 of the host device 105. In some aspects, the pause FSM 161may include a machine learning network (e.g., implemented by one or moreprocessors of the relay device 110 and/or program instructions stored ina memory of the relay device 110) which may be trained during run-timeof the relay device 110.

The pause aggregation engine 155 and/or the pause FSM 160 may beimplemented by program instructions (instruction sets) stored in amemory of the relay device 110. For example, the memory may beconfigured to store instruction sets and other data structures, inaddition to temporarily storing data for a processor of the relay device110 to execute various types of routines or functions. In an example,the program instructions (instruction sets) may be executable by theprocessor to provide functionality of the pause aggregation engine 155and/or the pause FSM 160 described herein. The pause aggregation engine155 may include a single or multiple engines.

According to example aspects of the present disclosure, the relay device110 may support (e.g., using the pause aggregation engine 155 and/or thepause FSM 160) a lossless transmission of data packets between the hostdevice 105 and the peer device 115. For example, the relay device 110may transmit a pause frame (also referred to herein as a pause message,a pause command, etc.) to the host device 105 for pausing data packettransmissions by the host device 105. The pause frame, for example, mayindicate a specified period of time for pausing data packettransmissions. In some other examples, the relay device 110 may transmita transmission command (also referred to herein as a start transmissioncommand) to the host device 105 for enabling or unpausing data packettransmissions by the host device 105. The relay device 110, in someexamples, may transmit pause frames and/or transmission commandsperiodically (based on an interval). In an example, the relay device 110may transmit pause frames and/or transmission commands to the hostdevice 105 over the communications link 120.

The relay device 110 (e.g., pause aggregation engine 155) may transmit apause frame or a transmission command to the host device 105 based on astate of the pause FSM 160. In an example, the pause FSM 160 maytransition to a first state (e.g., a pause state) or a second state(e.g., an unpause state) based on a utilization of the receive buffer150 (e.g., amount of stored data) with respect to a data storagecapacity. In some examples, the pause FSM 160 may transition to a pausestate or an unpause state based on a utilization of the receive buffer150 with respect to a data storage threshold. The data storage thresholdmay be different from (e.g., less than) the data storage capacity. Thedata storage threshold may be referred to as a buffer threshold.

In another example, the pause FSM 160 may transition to the pause stateor unpause state based on a pause frame or a transmission commandreceived by the relay device 110 from the peer device 115. In some otherexamples, the pause FSM 160 may transition to a pause state or anunpause state based on the utilization of the receive buffer 150 withrespect to the data storage capacity (or data storage threshold). Insome cases, the pause FSM 160 may transition to a pause state or anunpause state based on the utilization of the receive buffer asdescribed herein, in combination with receiving a pause frame or atransmission command.

In some aspects, the relay device 110 (based on design parameters) mayset the data storage threshold so as not to exceed the data storagecapacity of the receive buffer 150. For example, the relay device 110may set the data storage threshold such that, if the data storagethreshold at the receive buffer 150 is exceeded and the relay device 110transmits a pause frame to the host device 105, the relay device 110 canaccept and process the data packets (or frames) already transmitted overthe communications link 120 by the host device 105, without exceedingthe data storage capacity of the receive buffer 150. That is, forexample, the host device 105 will have enough time to stop transmittingdata packets (or frames) and the relay device 110 can accept and processthe data packets (or frames) already on the communications link 120,without exceeding the data storage capacity of the receive buffer 150.In some aspects, the relay device 110 may set the data storage thresholdof the receive buffer 150 to prevent packet loss (e.g., preventdiscarding received data packets).

In an example case, the relay device 110 (e.g., pause aggregation engine155) may transmit a pause frame to the host device 105 based on autilization of the receive buffer 150 being equal to (e.g., reaching) adata storage capacity of the receive buffer 150. In some aspects, therelay device 110 may transmit a pause frame based on a utilization ofthe receive buffer 150 being greater than or equal to a data storagethreshold (e.g., a threshold different from, for example, less than thedata storage capacity). For example, based on an amount of data storedin the receive buffer 150 being equal to the data storage capacity (orthe data storage threshold), the relay device 110 (e.g., the pauseaggregation engine 155) may transmit a pause frame to the host device105 over the communications link 120 (communications link 111).

In another example case, the relay device 110 (e.g., at the pause FSM160) may receive a pause frame from the peer device 115 over thecommunications link 125. Based on the pause frame, for example, therelay device 110 (e.g., pause aggregation engine 155) may transmit apause frame to the host device 105 over the communications link 120. Insome other examples, the relay device 110 may transmit a pause frame tothe host device 105 based on both the utilization of the receive buffer150 being equal to the data storage capacity (or the data storagethreshold) and the pause frame received from the peer device 115.

Alternatively, or additionally, the relay device 110 (e.g., pauseaggregation engine 155) may transmit a transmission command to the hostdevice 105 based on a utilization of the receive buffer 150 fallingbelow the data storage capacity (or the data storage threshold). Forexample, based on an amount of data stored in the receive buffer 150falling below the data storage capacity (or the data storage threshold),the pause FSM 160 may exit the pause state (e.g., enter an unpausestate), and the relay device 110 may transmit the transmission commandto the host device 105 over the communications link 120.

In another example case, the relay device 110 (e.g., at the pause FSM160) may receive a transmission command (also referred to herein as astart transmission command) from the peer device 115 over thecommunications link 125. Based on the transmission command from the peerdevice 115, for example, the relay device 110 (e.g., pause aggregationengine 155) may transmit a transmission command to the host device 105over the communications link 120. In some other examples, the relaydevice 110 may transmit a transmission command to the host device 105based on both the utilization of the receive buffer 150 falling belowthe data storage capacity (or the data storage threshold) and thetransmission command received from the peer device 115.

The pause frames described herein (e.g., pause frames communicated bythe host device 105, the relay device 110, and/or the peer device 115)may be, for example, priority-based flow control (PFC) pause framessupportive of symmetric pause. For example, the pause frames describedherein may include PFC pause frames supportive of pausing incoming datatraffic to a device (e.g., host device 105, relay device 110, peerdevice 115, etc.). In an example, pause frames transmitted from therelay device 110 to the host device 105 may include PFC pause framesindicating a request to for the host device 105 to pause (e.g., refrainfrom) transmitting data packets. In some aspects, based on a PFC pauseframe, the host device 105 may refrain from transmitting data packets(or frames) associated with a priority level corresponding to the PFCpause frame, while continuing to transmit data packets (or frames)associated with different priority levels.

In some aspects, the pause frames described herein (e.g., communicatedby the host device 105, the relay device 110, and/or the peer device115) may be referred to as XOFF (e.g., “transmit off”) commands or XOFFcodes. The transmission commands described herein (e.g., communicated bythe host device 105, the relay device 110, and/or the peer device 115)may be referred to as XON (e.g., “transmit on”) commands or XON codes.Aspects of the flow control described herein with reference to thesystem 100 may be referred to as software flow control or XON/XOFF flowcontrol.

In some aspects, the pause frames described herein may be, for example,Ethernet pause frames supportive of symmetric and asymmetric pause. Forexample, the pause frames described herein may Ethernet pause framessupportive of pausing the transmission of any or all traffic (e.g., datatraffic from the relay device 110 to the peer device 115, data trafficfrom the peer device 115 to the relay device 110, or both) on thecommunications link 125.

According to example aspects of the present disclosure, if the hostdevice 105 is enabled (e.g., by shadow logic) and the receive buffer 150is full, the relay device 110 (e.g., pause aggregation engine 155) maytransmit a pause frame to the host device 105. In some aspects, sendingthe pause frame may protect the receive buffer 150 (e.g., prevent bufferoverflow, prevent packet loss). Additional example aspects of the relaydevice 110 are further described with reference to FIG. 2 .

FIG. 2 illustrates an example of a system 200 that supports Ethernetpause aggregation for a relay device in accordance with aspects of thepresent disclosure. In some examples, the system 200 may implementaspects of the system 100 described with reference to FIG. 1 . Forexample, the system 100 may include a host device 205, a relay device210, and a peer device 215. The host device 205 and the relay device 210may communicate via a communications link 220. The relay device 210 andthe peer device 215 may communicate via a communications link 225. Thehost device 205, relay device 210, peer device 215, communications link220, and communications link 225 may be examples of a host device 105, arelay device 110, a peer device 115, a communications link 120, and acommunications link 125 respectively described with reference to FIG. 1.

The relay device 210 may include a relay component 245, a receive buffer250 (also referred to herein as a data buffer), a pause frame generator255 (also referred to herein as a pause packet generator), and a pauseFSM 260 (also referred to herein as referred to herein as a ‘modifiedpause FSM’, a “peer pause FSM shadow,” a ‘pause FSM reflection,’ or a‘peer pause FSM reflection’). The relay component 245 may be, forexample, a MACsec engine configured to perform one or more encryptionprocesses or conversion processes on data packets or signaling receivedfrom the host device 205 and/or the peer device 215. For example, forsignaling received from the host device 205 or the peer device 215, therelay component 245 may perform signal processing operations such assignal amplification, signal conversion (e.g., from electrical signalingto optical signaling, from a set of specifications to another set ofspecifications), and/or protocol conversion (e.g., the relay device 210may function as a repeater). The receive buffer 250 (also referred toherein as a ‘host-side buffer,’ a ‘host-side data buffer,’ or a ‘relayunit packet buffer’), pause frame generator 255, and pause FSM 260 maybe examples of the receive buffer 150, the pause aggregation engine 155,and the pause FSM 160 described with reference to FIG. 1 .

The system 200 may support the communication of data packets between thehost device 205 and the peer device 215, for example, via the relaydevice 210. In some aspects, the system 200 may implement aspects offlow control supportive of lossless transmission (e.g., avoiding droppedframes or data packets) between the host device 205, the relay device210, and the peer device 215. For example, the system 200 may supportstopping the flow of data packets at both the host side (e.g., arelatively short communications link) and the line side (e.g., arelatively long communications link) of the relay device 210. In anexample, the system 200 may support a lossless mode of operation fromthe host device 205 to the relay device 210 and a lossless mode ofoperation from the relay device 210 to the peer device 215. In anotherexample, the system 200 may support a lossless mode of operation fromthe peer device 215 (via the relay device 210) to the host device 205.

With reference to FIG. 2 , based on a state of a pause FSM of the hostdevice 205 (e.g., a pause FSM 130 described with reference to FIG. 1 ),the host device 205 may output a pause frame 230 for pausingtransmissions (e.g., of data packets) by the peer device 215 for aspecified period of time. Alternatively, or additionally, based on thestate of the pause FSM of the host device 205, the host device 205 mayoutput a transmission command (e.g., instead of the pause frame 230) forstarting or resuming transmissions of data packets by the peer device215. In some aspects, the host device 205 may transmit pause frames 230and/or transmission commands indirectly to the peer device 215, via therelay device 210 (e.g., via the communications link 220 and thecommunications link 225). For example, in some systems (e.g., anEthernet network), once a relay device 210 is added between nodes of theEthernet network (e.g., a host device 205 and a peer device 215, orbetween any other Ethernet nodes), there is no direct connectivitybetween the nodes, and any communication between nodes is forwardedthrough the relay device 210.

In some aspects, any information (e.g., data packets) communicatedbetween the host device 205 and the relay device 210 is overcommunications link 220. For example, services associated withcommunicating information (e.g., data packets) between the host device205 and the relay device 210 may be implemented over communications link220. In some aspects, any information (e.g., data packets) communicatedbetween the relay device 210 and the peer device 215 is overcommunications link 225. For example, services associated withcommunicating information (e.g., data packets) between the relay device210 and the peer device 215 may be implemented over communications link225.

In an example, although illustrated as different arrows in FIG. 2 , therelay device 210 may receive pause frames 230 from the host device 205,over the communications link 220. Further, although illustrated asdifferent arrows in FIG. 2 , the relay device 210 may forward the pauseframes 230 to the peer device 215, over the communications link 225.

In another example, although illustrated as different arrows in FIG. 2 ,the relay device 210 may receive pause frames 235 from the peer device215, over the communications link 225. The pause frames 235 may be fedto the pause FSM 260. Further, although illustrated as different arrowsin FIG. 2 , the relay device 210 may forward the pause frames 235 to thehost device 205 (e.g., see pause frames 265), over the communicationslink 220. For example, the relay device 210 may forward (e.g., transmit)the pause frames 235 to the host device 205 based on the status of thereceive buffer 250 (e.g., host-side buffer) and/or an indication (e.g.,a pause command, a transmission command) in the pause frame 235, aspectsof which are described herein.

In some examples, based on a state of a pause FSM of the peer device 215(e.g., pause FSM 165 described with reference to FIG. 1 ), the peerdevice 215 may output a pause frame 235 for pausing transmissions ofdata packets by the host device 205 for a specified period of time.Alternatively, or additionally, based on the state of the pause FSM ofthe peer device 215, the peer device 215 may output a transmissioncommand (e.g., instead of the pause frame 235) for starting or resumingtransmissions of data packets by the host device 205.

Example aspects of the present disclosure may support indirecttransmission of pause frames 235 and/or transmission commands from thepeer device 215 to the host device 205. For example, the peer device 215may transmit pause frames 235 and/or transmission commands indirectly tothe host device 205, via the relay device 210 (e.g., over thecommunications link 225 and the communications link 220).

For example, the peer device 215 may transmit a pause frame 235 to therelay device 210, based on which the relay device 210 may transmit acorresponding pause frame (e.g., a pause frame 265) to the host device205. In another example, the peer device 215 may transmit a transmissioncommand to the relay device 210, based on which the relay device 210 maytransmit a corresponding transmission command to the host device 205. Insome aspects, the indirect transmission of pause frames 235 and/ortransmission commands between the peer device 215 and the host device205 (e.g., via the relay device 210) may be different fromimplementations in some other data packet networks in which a peerdevice transmits pause frames and/or transmission commands directly to ahost device. For example, aspects of indirect transmission of pauseframes 235 and/or transmission commands may differ from otherimplementations in which the peer device 215 may transmit pause frames235 and/or transmission commands directly to the host device 205, via acommunications channel different from the communications link 220 andcommunications link 225 (e.g., without the relay device 210, bypassingthe relay device 210).

According to example aspects of the present disclosure, the relay device210 (e.g., pause frame generator 255) may transmit a pause frame 265 tothe host device 205 based on a utilization of the receive buffer 250being equal to (e.g., reaching) a data storage capacity of the receivebuffer 250. In some aspects, the relay device 210 may transmit a pauseframe 265 based on a utilization of the receive buffer 250 being greaterthan or equal to a data storage threshold different from (e.g., lessthan) the data storage capacity. In some other aspects, the relay device210 (e.g., pause frame generator 255) may transmit a pause frame 265based on the relay device 210 receiving (e.g., at the pause FSM 260) apause frame 235 from the peer device 215 over the communications link225. In some aspects, although illustrated as different arrows in FIG. 2, the relay device 210 may transmit the pause frame 265 to the hostdevice 205 over the communications link 220.

Alternatively, or additionally, the relay device 210 (e.g., pause framegenerator 255) may transmit a transmission command (e.g., instead of thepause frame 265) to the host device 205 based on a utilization of thereceive buffer 250 being less than the data storage capacity of thereceive buffer 250. In some aspects, the relay device 210 may transmit atransmission command based on a utilization of the receive buffer 250being less than the data storage threshold of the receive buffer 250. Insome other aspects, the relay device 210 (e.g., pause frame generator255) may transmit a transmission command based on the relay device 210receiving a transmission command (e.g., instead of the pause frame 235)from the peer device 215 over the communications link 225. In someaspects, the relay device 210 may transmit the transmission command tothe host device 205 over the communications link 220.

For example, the relay device 210 (e.g., at the pause frame generator255) may output a pause frame 265 or a transmission command based on abuffer status 251 of the receive buffer 250. In another example, therelay device 210 (e.g., at the pause frame generator 255) may output apause frame 265 or a transmission command based on an FSM status of thepause FSM 260. In some other examples, the relay device 210 (e.g., atthe pause frame generator 255) may output a pause frame 265 or atransmission command based on a combination of the buffer status 251 andthe FSM status 261.

In some aspects, the relay device 210 (e.g., at the receive buffer 250)may output the buffer status 251 based on a comparison of an amount ofdata stored in the receive buffer 250 to the data storage capacity (orthe data storage threshold) of the receive buffer 250. In an example,based on the comparison, the buffer status 251 may indicate that thereceive buffer 250 is “full” if the amount of data stored in the receivebuffer 250 is equal to (e.g., reaches) a data storage capacity of thereceive buffer 250. In another example, based on the comparison, thebuffer status 251 may indicate whether the amount of data stored in thereceive buffer 250 is greater than or equal to the data storagethreshold of the receive buffer 250. In some examples, based on thecomparison, the buffer status 251 may indicate whether the amount ofdata stored in the receive buffer 250 is less than the data storagethreshold.

The FSM status 261 may indicate a state (e.g., a pause state, an unpausestate) of the pause FSM 260. For example, the pause FSM 260 maytransition to the pause state from the unpause state based on the relaydevice 210 (e.g., at the pause FSM 260) receiving a pause frame 235 fromthe peer device 215. In an example, the pause FSM 260 may set the FSMstatus 261 to indicate the pause state. Alternatively, or additionally,the pause FSM 260 may transition to the unpause state from the pausestate based on the relay device 210 (e.g., at the pause FSM 260)receiving a transmission command (e.g., instead of the pause frame 235)from the peer device 215. In an example, the pause FSM 260 may set theFSM status 261 to indicate the unpause state. In some aspects, the pausestate and the unpause state may respectively correspond to differentmodes of the pause FSM 260.

In an example case, the relay device 210 (e.g., pause frame generator255) may transmit a pause frame 265 to the host device 105 based on anindication in the buffer status 251 that the utilization of the receivebuffer 250 is equal to the data storage capacity of the receive buffer250. In another example case, the relay device 210 may transmit thepause frame 265 to the host device 205 based on an indication in thebuffer status 251 that the utilization of the receive buffer 250 isgreater than or equal to the data storage threshold of the receivebuffer 250. In some aspects, the relay device 210 may transmit the pauseframe 265 without receiving a pause frame 235 from the peer device 215.

In other example cases, the relay device 210 (e.g., at the pause FSM260) may receive a pause frame 235 from the peer device 215 over thecommunications link 225. Based on the pause frame 235, the pause FSM 260may enter a pause state. The relay device 210 (e.g., at the pause framegenerator 255) may determine, from the FSM status 261 (e.g., theindication of the pause state), that the pause FSM 260 is in the pausestate. The relay device 210 (e.g., pause frame generator 255) maytransmit a pause frame 265 to the host device 105 based on the FSMstatus 261.

In another example case, the relay device 210 (e.g., at the pause FSM260) may receive a transmission command (also referred to herein as astart transmission command) from the peer device 215 over thecommunications link 225. Based on the transmission command, the pauseFSM 260 may enter an unpause state. The relay device 210 (e.g., at thepause frame generator 255) may determine, from the FSM status 261 (e.g.,the indication of the unpause state), that the pause FSM 260 is in theunpause state. The relay device 210 (e.g., pause frame generator 255)may transmit a transmission command to the host device 105 based on theFSM status 261.

In another example case, the relay device 210 may transmit atransmission command to the host device 105 based on the FSM status 261(e.g., an indication of the unpause state) in combination with thebuffer status 251 indicating that the utilization of the receive buffer250 is less than the data storage threshold of the receive buffer 250.In some examples, the relay device 210 may transmit a transmissioncommand to the host device 105 based on the FSM status 261 (e.g., anindication of the unpause state) in combination with the buffer status251 indicating that the utilization of the receive buffer 250 is lessthan the data storage capacity the receive buffer 250.

In some aspects, the relay device 210 may store the pause frame 235, anindication associated with the pause frame 235, or both in a memory ofthe relay device 210. In some aspects, the relay device 210 may store areceived transmission command, an indication associated with thetransmission command, or both in a memory of the relay device 210. Insome cases, the FSM status 261 (e.g., pause state, unpause state)described herein may indicate characteristics associated with a pauseframe 235 (e.g., ‘do not send’ data packets) or a transmission command(e.g., ‘send’ data packets).

In an example case, the relay device 210 may support a reduced buffersize compared to some other relay devices. For example, the receivebuffer 250 may have a reduced buffer size compared to receive buffers ofsome other relay devices. In an example, the relay device 210 mayrefrain from transmitting a transmission command to the host device 205,even if the buffer status 251 indicates that the utilization of thereceive buffer 250 is less than the data storage threshold (or the datastorage capacity) of the receive buffer 250. For example, the relaydevice 210 may wait to receive a transmission command from the peerdevice 215 before transmitting a transmission command to the host device205. Accordingly, for example, the relay device 210 may refrain fromaccumulating an amount of data in the receive buffer 250 that exceedsthe data storage threshold (or the data storage capacity) of the receivebuffer 250.

According to example aspects of the present disclosure, the size of thereceive buffer 250 may be determined based on an interface bandwidthassociated with the communications link 225, a distance between therelay device 210 and the peer device 215, and/or a transmission speedassociated with the communications link 225. For example, the relaydevice 210 may support various lengths and/or transmission speeds of thecommunications link 225. In an example, the size of the receive buffer250 may be determined or set to support a lossless flow of data from thehost device 205 to the peer device 215 (e.g., via the relay device 210).The relay device 210 may store, in the receive buffer 250, data packetsreceived from the host device 205, while refraining from discarding anyof the received data packets.

In an example, the communications link 225 may have a length of at least5 meters (e.g., such that a round trip distance between the relay device210 and the peer device 215 is equal to at least 10 meters), and thecommunications link 225 may support a data transmission speed of atleast 400 Gigabits/second. Based on the example, the relay device 210may support a receive buffer size (e.g., a ‘host-side data buffer’ forstoring data packets received from a host device 205 and for forwardingthe data packets to the peer device 215) that is smaller compared toreceive buffers (e.g., ‘host-side data buffers’) in some relay devices.For example, the data storage capacity of the receive buffer 250 may beless than or equal to 50 kb. In another example, the data storagecapacity of the receive buffer 250 may be less than or equal to 25 kb.In some aspects, the relay device 210 may support a shared buffer forstoring packets both from the peer device 215 (e.g., peer-side buffer)and from the host device 205 (e.g., host-side buffer).

The pause frames described herein (e.g., pause frame 230, pause frame235, pause frame 265) may include aspects of the pause frames describedwith reference to FIG. 1 . For example, the pause frames may be, forexample, PFC pause frames supportive of symmetric pause. In someaspects, the pause frames may be Ethernet pause frames supportive ofsymmetric and asymmetric pause.

FIG. 3 illustrates an example of a system 300 that supports Ethernetpause aggregation for a relay device in accordance with aspects of thepresent disclosure. The system 300 may include a relay device 305. Therelay device 305 may include aspects of a relay device 110 or a relaydevice 210 described with reference to FIGS. 1 and 2 . The relay device305 may perform any or all of the operations described in the presentdisclosure.

The relay device 305 may include a transmitter 310, a receiver 315, acommunications interface 320, a controller 320, a memory 325, aprocessor 340, and a communications interface 360. In some examples,components of the relay device 305 (e.g., transmitter 310, receiver 315,controller 320, memory 325, processor 340, communications interface 360,etc.) may communicate over a system bus (e.g., control busses, addressbusses, data busses, etc.) included in the relay device 305.

The transmitter 310 and the receiver 315 may support the transmissionand reception of signals to and from the relay device 305. In someaspects, the transmitter 310 and the receiver 315 may support thetransmission and reception of signals within the relay device 305. Thetransmitter 310 and receiver 315 may be collectively referred to as atransceiver. An antenna may be electrically coupled to the transceiver.The relay device 305 may also include (not shown) multiple transmitters310, multiple receivers 315, multiple transceivers and/or multipleantennas.

The controller 320 may be located on a same chip (e.g., ASIC chip) asthe transmitter 310 and/or the receiver 315. In some cases, thecontroller 320 may be located on a different chip as the transmitter 310and/or the receiver 315. In some examples, the controller 320 may belocated on the same chip (or a different chip) as the relay device 305.The controller 320 may instruct components in the relay device 305(e.g., processor 340, digital signal processor (DSP) 355) to perform oneor more encryption processes and/or signal processing operations (e.g.,signal amplification, signal conversion, and/or protocol conversion) ondata packets or signaling received from a host device (e.g., host device105, host device 205) and/or a peer device (e.g., peer device 115, peerdevice 215). In some examples, the controller 320 may be a programmedmicroprocessor or microcontroller. In some aspects, the controller 320may include one or more CPUs, memory, and programmable I/O peripherals.

The memory 325 may be any electronic component capable of storingelectronic information. The memory 325 may be, for example, randomaccess memory (RAM), read-only memory (ROM), magnetic disk storagemedia, optical storage media, flash memory devices in RAM, on-boardmemory included with the processor, EPROM memory, EEPROM memory,registers, and so forth, including combinations thereof.

The memory 325 may include instructions 330 (computer readable code) anddata 335 stored thereon. The instructions 330 may be executable by theprocessor 340 to implement the methods disclosed herein. In someaspects, execution of the instructions 330 may involve one or moreportions of the data 335. In some examples, when the processor 340executes the instructions 330, various portions of the instructions 330and/or the data 335 may be loaded onto the processor 340.

The processor 340 may correspond to one or multiple computer processingdevices. For example, the processor 340 may include a silicon chip, suchas a Field Programmable Gate Array (FPGA), an ASIC, any other type ofIntegrated Circuit (IC) chip, a collection of IC chips, or the like. Insome aspects, the processors may include a microprocessor, a CentralProcessing Unit (CPU), a Graphics Processing Unit (GPU), or plurality ofmicroprocessors configured to execute instructions sets stored in acorresponding memory (e.g., memory 325 of the relay device 305). Forexample, upon executing the instruction sets stored in memory 325, theprocessor 340 may enable or perform one or more functions of the relaydevice 305. In some examples, a combination of processors 340 (e.g., anadvanced reduced instruction set computer (RISC) machine (ARM) and theDSP 355) may be implemented in the relay device 305.

The communications interface 360 may support interactions (e.g., via aphysical or virtual interface) between a user and the relay device 305.

FIG. 4 illustrates an example of a process flow 400 that supportsEthernet pause aggregation for a relay device in accordance with aspectsof the present disclosure. In some examples, process flow 400 mayimplement aspects of systems 100, system 200, or system 300. Further,process flow 400 may be implemented by a relay device 110, relay device210, or relay device 305 described with reference to FIGS. 1 through 3 .In an example, the process flow 400 may support flow control in anetwork described herein (e.g., a LAN).

In the following description of the process flow 400, the operations maybe performed in a different order than the order shown, or theoperations may be performed in different orders or at different times.Certain operations may also be left out of the process flow 400, orother operations may be added to the process flow 400. It is to beunderstood that while a relay device 110 is described as performing anumber of the operations of process flow 400, any device (e.g., anyrelay device 110 in communication with a host device and a peer device)may perform the operations shown.

At 405, the relay device 110 may receive a set of data packets. In anexample, the relay device 110 may store the set of data packets to adata buffer of the relay device 110. In some examples, receiving the setof data packets, storing the set of data packets, or both may includerefraining from discarding one or more data packets of the set of datapackets.

At 410, the relay device 110 may identify a quantity of empty data bytelocations in a data buffer of the relay device 110. In an example, therelay device 110 may identify the quantity of empty data byte locationsbased on storing the set of data packets.

At 415, the relay device 110 may receive an indicator (e.g., a pauseframe or a transmission command) associated with transmitting datapackets. In some examples, the relay device 110 may transmit at least asubset of the set of data packets over a communication medium based onthe indicator (e.g., a transmission command). In some aspects, the relaydevice 110 may identify the quantity of empty data byte locations basedon transmitting at least the subset of the set of data packets.

At 416, the relay device 110 may identify the state of a state machine(e.g., pause FSM 160) included in the relay device 110. In some aspects,the state of the state machine may be based on the indicator.

In an example, the communication medium may include a physical mediumelectrically coupling the relay device 110 and a first device of atleast two other devices. In some examples, the at least two otherdevices may include a host device and a peer device. In an example, thefirst device may be the peer device. In some cases, the relay device 110may determine a size of the data buffer based on one or more of: aninterface bandwidth associated with the communication medium; a distancebetween the device and the first device; and a transmission speedassociated with the communication medium.

In some aspects, the relay device 110 may pause or enable the losslessflow of data based on the quantity of empty data byte locations comparedto a threshold. In some other aspects, the relay device 110 may pause orenable the lossless flow of data based on the state of the statemachine. For example, at 420-a, the relay device 110 may compare thequantity of empty data byte locations to a threshold. In anotherexample, at 420-b, the relay device 110 may determine whether the statemachine is in a pause state or an unpause state.

In an example, at 425, the relay device 110 may pause a lossless flow ofdata between the relay device 110 and the at least two other devices(e.g., host device and peer device). In some examples, the relay device110 may pause the lossless flow of data based on the quantity of emptydata byte locations being below a threshold, the state of the statemachine (e.g., a pause state), or both.

At 430, the relay device 110 may transmit a pause request based on thequantity of empty data byte locations being below a threshold, the stateof the state machine (e.g., a pause state), or both. In some examples,the pause request, the indicator (e.g., a pause frame), or both mayinclude a control frame.

In some aspects, the relay device 110 may pause the lossless flow ofdata based on the quantity of empty data byte locations identified at410, regardless of the state of the state machine. In some otheraspects, the relay device 110 may pause the lossless flow of data basedon a first state associated with the state machine.

Alternatively, or additionally, at 435, the relay device 110 may enablethe lossless flow of data between the relay device 110 and the at leasttwo other devices (e.g., host device and peer device). In some examples,the relay device 110 may enable the lossless flow of data based on thequantity of empty data byte locations exceeding the threshold, the stateof the state machine (e.g., an unpause state), or both.

At 440, the relay device 110 may transmit an enable request based on thequantity of empty data byte locations exceeding a threshold, the stateof the state machine (e.g., an unpause state), or both. In someexamples, the enable request, the indicator (e.g., a transmissioncommand), or both may include a control frame.

In some aspects, the relay device 110 may enable the lossless flow ofdata based on the quantity of empty data byte locations identified at410, regardless of the state of the state machine. In some otheraspects, the relay device 110 may enable the lossless flow of data basedon a second state associated with the state machine.

Particular aspects of the subject matter described herein may beimplemented to realize one or more advantages. The described techniquesmay support improvements in the packet broadcasting framework, decreasedsignaling overhead, reduced memory buffer size, and improvedreliability, among other advantages. As such, supported techniques mayinclude improved network operations and, in some examples, may promotenetwork efficiencies and reduced overhead, among other benefits.

Any of the steps, functions, and operations discussed herein can beperformed continuously and automatically.

The exemplary systems and methods of this disclosure have been describedin relation to examples of a relay device 110, a relay device 210, and arelay device 305. However, to avoid unnecessarily obscuring the presentdisclosure, the preceding description omits a number of known structuresand devices. This omission is not to be construed as a limitation of thescope of the claimed disclosure. Specific details are set forth toprovide an understanding of the present disclosure. It should, however,be appreciated that the present disclosure may be practiced in a varietyof ways beyond the specific detail set forth herein.

Furthermore, while the exemplary embodiments illustrated herein show thevarious components of the system collocated, certain components of thesystem can be located remotely, at distant portions of a distributednetwork, such as a LAN and/or the Internet, or within a dedicatedsystem. Thus, it should be appreciated, that the components of thesystem can be combined into one or more devices, such as a server,communication device, or collocated on a particular node of adistributed network, such as an analog and/or digital telecommunicationsnetwork, a packet-switched network, or a circuit-switched network. Itwill be appreciated from the preceding description, and for reasons ofcomputational efficiency, that the components of the system can bearranged at any location within a distributed network of componentswithout affecting the operation of the system.

Furthermore, it should be appreciated that the various links connectingthe elements can be wired or wireless links, or any combination thereof,or any other known or later developed element(s) that is capable ofsupplying and/or communicating data to and from the connected elements.These wired or wireless links can also be secure links and may becapable of communicating encrypted information. Transmission media usedas links, for example, can be any suitable carrier for electricalsignals, including coaxial cables, copper wire, and fiber optics, andmay take the form of acoustic or light waves, such as those generatedduring radio-wave and infra-red data communications.

While the flowcharts have been discussed and illustrated in relation toa particular sequence of events, it should be appreciated that changes,additions, and omissions to this sequence can occur without materiallyaffecting the operation of the disclosed embodiments, configuration, andaspects.

A number of variations and modifications of the disclosure can be used.It would be possible to provide for some features of the disclosurewithout providing others.

In yet another embodiment, the systems and methods of this disclosurecan be implemented in conjunction with a special purpose computer, aprogrammed microprocessor or microcontroller and peripheral integratedcircuit element(s), an ASIC or other integrated circuit, a digitalsignal processor, a hard-wired electronic or logic circuit such asdiscrete element circuit, a programmable logic device or gate array suchas PLD, PLA, FPGA, PAL, special purpose computer, any comparable means,or the like. In general, any device(s) or means capable of implementingthe methodology illustrated herein can be used to implement the variousaspects of this disclosure. Exemplary hardware that can be used for thepresent disclosure includes computers, handheld devices, telephones(e.g., cellular, Internet enabled, digital, analog, hybrids, andothers), and other hardware known in the art. Some of these devicesinclude processors (e.g., a single or multiple microprocessors), memory,nonvolatile storage, input devices, and output devices. Furthermore,alternative software implementations including, but not limited to,distributed processing or component/object distributed processing,parallel processing, or virtual machine processing can also beconstructed to implement the methods described herein.

In yet another embodiment, the disclosed methods may be readilyimplemented in conjunction with software using object or object-orientedsoftware development environments that provide portable source code thatcan be used on a variety of computer or workstation platforms.Alternatively, the disclosed system may be implemented partially orfully in hardware using standard logic circuits or VLSI design. Whethersoftware or hardware is used to implement the systems in accordance withthis disclosure is dependent on the speed and/or efficiency requirementsof the system, the particular function, and the particular software orhardware systems or microprocessor or microcomputer systems beingutilized.

In yet another embodiment, the disclosed methods may be partiallyimplemented in software that can be stored on a storage medium, executedon programmed general-purpose computer with the cooperation of acontroller and memory, a special purpose computer, a microprocessor, orthe like. In these instances, the systems and methods of this disclosurecan be implemented as a program embedded on a personal computer such asan applet, JAVA® or CGI script, as a resource residing on a server orcomputer workstation, as a routine embedded in a dedicated measurementsystem, system component, or the like. The system can also beimplemented by physically incorporating the system and/or method into asoftware and/or hardware system.

Although the present disclosure describes components and functionsimplemented in the embodiments with reference to particular standardsand protocols, the disclosure is not limited to such standards andprotocols. Other similar standards and protocols not mentioned hereinare in existence and are considered to be included in the presentdisclosure. Moreover, the standards and protocols mentioned herein andother similar standards and protocols not mentioned herein areperiodically superseded by faster or more effective equivalents havingessentially the same functions. Such replacement standards and protocolshaving the same functions are considered equivalents included in thepresent disclosure.

The present disclosure, in various embodiments, configurations, andaspects, includes components, methods, processes, systems and/orapparatus substantially as depicted and described herein, includingvarious embodiments, subcombinations, and subsets thereof. Those ofskill in the art will understand how to make and use the systems andmethods disclosed herein after understanding the present disclosure. Thepresent disclosure, in various embodiments, configurations, and aspects,includes providing devices and processes in the absence of items notdepicted and/or described herein or in various embodiments,configurations, or aspects hereof, including in the absence of suchitems as may have been used in previous devices or processes, e.g., forimproving performance, achieving ease, and/or reducing cost ofimplementation.

The foregoing discussion of the disclosure has been presented forpurposes of illustration and description. The foregoing is not intendedto limit the disclosure to the form or forms disclosed herein. In theforegoing Detailed Description for example, various features of thedisclosure are grouped together in one or more embodiments,configurations, or aspects for the purpose of streamlining thedisclosure. The features of the embodiments, configurations, or aspectsof the disclosure may be combined in alternate embodiments,configurations, or aspects other than those discussed above. This methodof disclosure is not to be interpreted as reflecting an intention thatthe claimed disclosure requires more features than are expressly recitedin each claim. Rather, as the following claims reflect, inventiveaspects lie in less than all features of a single foregoing disclosedembodiment, configuration, or aspect. Thus, the following claims arehereby incorporated into this Detailed Description, with each claimstanding on its own as a separate preferred embodiment of thedisclosure.

Moreover, though the description of the disclosure has includeddescription of one or more embodiments, configurations, or aspects andcertain variations and modifications, other variations, combinations,and modifications are within the scope of the disclosure, e.g., as maybe within the skill and knowledge of those in the art, afterunderstanding the present disclosure. It is intended to obtain rights,which include alternative embodiments, configurations, or aspects to theextent permitted, including alternate, interchangeable and/or equivalentstructures, functions, ranges, or steps to those claimed, whether or notsuch alternate, interchangeable and/or equivalent structures, functions,ranges, or steps are disclosed herein, and without intending to publiclydedicate any patentable subject matter.

The phrases “at least one,” “one or more,” “or,” and “and/or” areopen-ended expressions that are both conjunctive and disjunctive inoperation. For example, each of the expressions “at least one of A, Band C,” “at least one of A, B, or C,” “one or more of A, B, and C,” “oneor more of A, B, or C,” “A, B, and/or C,” and “A, B, or C” means Aalone, B alone, C alone, A and B together, A and C together, B and Ctogether, or A, B and C together.

The term “a” or “an” entity refers to one or more of that entity. Assuch, the terms “a” (or “an”), “one or more,” and “at least one” can beused interchangeably herein. It is also to be noted that the terms“comprising,” “including,” and “having” can be used interchangeably.

The term “automatic” and variations thereof, as used herein, refers toany process or operation, which is typically continuous orsemi-continuous, done without material human input when the process oroperation is performed. However, a process or operation can beautomatic, even though performance of the process or operation usesmaterial or immaterial human input, if the input is received beforeperformance of the process or operation. Human input is deemed to bematerial if such input influences how the process or operation will beperformed. Human input that consents to the performance of the processor operation is not deemed to be “material.”

Aspects of the present disclosure may take the form of an embodimentthat is entirely hardware, an embodiment that is entirely software(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module,” or “system.”Any combination of one or more computer-readable medium(s) may beutilized. The computer-readable medium may be a computer-readable signalmedium or a computer-readable storage medium.

A computer-readable storage medium may be, for example, but not limitedto, an electronic, magnetic, optical, electromagnetic, infrared, orsemiconductor system, apparatus, or device, or any suitable combinationof the foregoing. More specific examples (a non-exhaustive list) of thecomputer-readable storage medium would include the following: anelectrical connection having one or more wires, a portable computerdiskette, a hard disk, a random access memory (RAM), a read-only memory(ROM), an erasable programmable read-only memory (EPROM or Flashmemory), an optical fiber, a portable compact disc read-only memory(CD-ROM), an optical storage device, a magnetic storage device, or anysuitable combination of the foregoing. In the context of this document,a computer-readable storage medium may be any tangible medium that cancontain or store a program for use by or in connection with aninstruction execution system, apparatus, or device.

A computer-readable signal medium may include a propagated data signalwith computer-readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer-readable signal medium may be any computer-readable medium thatis not a computer-readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device. Program codeembodied on a computer-readable medium may be transmitted using anyappropriate medium, including, but not limited to, wireless, wireline,optical fiber cable, RF, etc., or any suitable combination of theforegoing.

The terms “determine,” “calculate,” “compute,” and variations thereof,as used herein, are used interchangeably and include any type ofmethodology, process, mathematical operation or technique

What is claimed is:
 1. A method for flow control in a network, themethod comprising: identifying, by a device, a quantity of empty databyte locations in a data buffer of the device; receiving an indicatorassociated with transmitting data packets; identifying a state of astate machine included in the device, wherein the state of the statemachine is based at least in part on the indicator; and pausing alossless flow of data between the device and at least two other devices,wherein pausing the lossless flow of data is based at least in part onthe quantity of empty data byte locations being below a threshold, thestate of the state machine, or both.
 2. The method of claim 1, furthercomprising: enabling the lossless flow of data between the device andthe at least two other devices, wherein enabling the lossless flow ofdata is based at least in part on the quantity of empty data bytelocations exceeding the threshold, the state of the state machine, orboth.
 3. The method of claim 2, wherein: pausing the lossless flow ofdata based at least in part on the quantity of empty data byte locationsis regardless of the state of the state machine; enabling the losslessflow of data based at least in part on the quantity of empty data bytelocations is regardless of the state of the state machine; or both. 4.The method of claim 2, wherein: pausing the lossless flow of data isbased at least in part on a first state associated with the statemachine; and enabling the lossless flow of data is based at least inpart on a second state associated with the state machine.
 5. The methodof claim 1, further comprising: transmitting a pause request based atleast in part on the quantity of empty data byte locations being below athreshold, the state of the state machine, or both, wherein the pauserequest, the indicator, or both comprises a control frame.
 6. The methodof claim 1, further comprising: transmitting an enable request based atleast in part on the quantity of empty data byte locations exceeding athreshold, the state of the state machine, or both, wherein the enablerequest, the indicator, or both comprises a control frame.
 7. The methodof claim 1, further comprising: receiving a set of data packets; andstoring the set of data packets to the data buffer, wherein identifyingthe quantity of empty data byte locations is based at least in part onstoring the set of data packets.
 8. The method of claim 7, whereinreceiving the set of data packets, storing the set of data packets, orboth comprises refraining from discarding one or more data packets ofthe set of data packets.
 9. The method of claim 7, further comprising:transmitting at least a subset of the set of data packets over acommunication medium based at least in part on the state of the statemachine, wherein identifying the quantity of empty data byte locationsis based at least in part on transmitting at least the subset of the setof data packets.
 10. The method of claim 9, wherein the communicationmedium comprises a physical medium electrically coupling the device anda first device of the at least two other devices.
 11. The method ofclaim 9, further comprising: determining a size of the data buffer basedat least in part on one or more of: an interface bandwidth associatedwith the communication medium; a distance between the device and thefirst device; and a transmission speed associated with the communicationmedium.
 12. The method of claim 1, wherein the device comprises a relaydevice.
 13. The method of claim 1, wherein the at least two otherdevices comprise a host device and a peer device.
 14. The method ofclaim 1, wherein the network comprises a local area network.
 15. Adevice comprising: a state machine; a processor; memory in electroniccommunication with the processor; and instructions stored in the memory,the instructions being executable by the processor to: identify, by thedevice, a quantity of empty data byte locations in a data buffer of thedevice; receive an indicator associated with transmitting data packets;identifying a state of a state machine included in the device, whereinthe state of the state machine is based at least in part on theindicator; and pause a lossless flow of data between the device and atleast two other devices, wherein pausing the lossless flow of data isbased at least in part on the quantity of empty data byte locationsbeing below a threshold, the state of the state machine, or both. 16.The device of claim 15, wherein the instructions are further executableby the processor to: enable the lossless flow of data between the deviceand the at least two other devices, wherein enabling the lossless flowof data is based at least in part on the quantity of empty data bytelocations exceeding the threshold, the state of the state machine, orboth.
 17. The method of claim 16, wherein: pausing the lossless flow ofdata based at least in part on the quantity of empty data byte locationsis regardless of the state of the state machine; enabling the losslessflow of data based at least in part on the quantity of empty data bytelocations is regardless of the state of the state machine; or both. 18.The device of claim 16, wherein: pausing the lossless flow of data isbased at least in part on a first state associated with the statemachine; and enabling the lossless flow of data is based at least inpart on a second state associated with the state machine.
 19. The deviceof claim 15, wherein the instructions are further executable by theprocessor to: transmitting a pause request based at least in part on thequantity of empty data byte locations being below a threshold, the stateof the state machine, or both, wherein the pause request, the indicator,or both comprises a control frame.
 20. A system comprising: a databuffer; a controller, wherein the controller is configured to identify aquantity of empty data byte locations in the data buffer; a transceiver,wherein the transceiver is configured to receive an indicator associatedwith transmitting data packets; and a state machine configured totransition among a set of states based at least in part on theindicator, wherein the controller is further configured to pause alossless flow of data between the data buffer and at least two devices,wherein pausing the lossless flow of data is based at least in part onthe quantity of empty data byte locations being below a threshold, astate of the state machine, or both.
 21. A relay device, comprising: afirst data interface coupled with a peer device; a second data interfacecoupled with a host device; a data buffer that is configured to storedata packets received from the host device prior to transmitting thedata packets to the peer device; and a state machine that enables alossless transmission of data between the host device and peer deviceand transmits a pause frame to the host device based on a data bufferutilization reaching a data storage capacity.
 22. The relay device ofclaim 21, wherein the state machine is further configured to transmitthe pause frame to the host device in response to receiving anadditional pause frame from the peer device.
 23. The relay device ofclaim 21, wherein the data buffer comprises a First-In-First-Out databuffer.
 24. The relay device of claim 21, wherein the data packets arereceived at more than 400 G/sec and wherein the data buffer comprises acapacity of no more than 50 kb.
 25. The relay device of claim 24,wherein the data buffer comprises a capacity of no more than 25 kb. 26.The relay device of claim 21, wherein a data cable connects the firstdata interface with the peer device and wherein a line trace connectsthe second data interface with the host device.
 27. The relay device ofclaim 26, wherein the data cable is at least 5 m in length.
 28. Therelay device of claim 21, wherein the first data interface comprises atleast one of a PCIe interface and an Ethernet interface.
 29. The relaydevice of claim 21, wherein the state machine is further configured totransmit a start transmission command to the host device in response tothe data buffer utilization falling below a predetermined threshold.